package com.telemetria.util;

import java.text.DecimalFormat;
import java.text.NumberFormat;

import org.joda.time.Duration;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

import com.telemetria.entity.Tempo;

public class TempoFormatter {
	
	private static NumberFormat tresDigitos = new DecimalFormat("000");
	private static NumberFormat doisDigitos = new DecimalFormat("00");
	
	
public static String parseTempoJodaTime(Duration duration){
		
		if(duration == null){
			return "--:--:--:---";
		}
		
		Period period = duration.toPeriod();
		
		PeriodFormatter formato = new PeriodFormatterBuilder()
	     .printZeroAlways()
	     .minimumPrintedDigits(2)	     
	     .appendHours()
	     .appendSeparator(":")
	     
	     .printZeroAlways()
	     .minimumPrintedDigits(2)
	     .appendMinutes()
	     .appendSeparator(":")
	     
	     .printZeroAlways()
	     .minimumPrintedDigits(2)
	     .appendSeconds()
	     .appendSeparator(":")
	     
	     .printZeroAlways()
	     .minimumPrintedDigits(3)
	     .appendMillis()
	     .toFormatter();
		
		String result = period.toString(formato).replaceAll("-", "");
		
//		if(isNegative){
//			return "-".concat(result);
//		}
		return result;
	}
	
//	public static String parseTempoString(Period periodo){
//		boolean isNegative = false;
//
//		if(periodo == null){
//			return null;
//		}
//		
//		int result = new Period(Period.ZERO).minus(periodo).getMillis();
//		
//		if(result < 0){
//			isNegative = true;
//		}
//		
//		StringBuffer retorno = new StringBuffer();	
//		
//		retorno.append( doisDigitos.format(periodo.getHours()));
//		retorno.append(":");
//		retorno.append( doisDigitos.format(periodo.getMinutes()));
//		retorno.append(":");
//		retorno.append( doisDigitos.format(periodo.getMinutes()));
//		retorno.append(":");
//		retorno.append( tresDigitos.format(periodo.getMillis()));
//		
//	return retorno.toString();
//	}
//	
//	public static String parseTempoString(Tempo tempo){
//		
//		StringBuffer retorno = new StringBuffer();	
//		
//		retorno.append( doisDigitos.format(tempo.getNuHoras()));
//		retorno.append(":");
//		retorno.append( doisDigitos.format(tempo.getNuMinutos()));
//		retorno.append(":");
//		retorno.append( doisDigitos.format(tempo.getNuSegundos()));
//		retorno.append(":");
//		retorno.append( tresDigitos.format(tempo.getMilissegundos()));
//		
//		return retorno.toString();
//	}
	
}
